#ifndef MUSICWINDOW_H
#define MUSICWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QListWidgetItem>
#include <QNetworkReply>
#include <QLabel>
#include <QTimer>
using namespace std;

namespace Ui {
class MusicWindow;
}

class MusicWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MusicWindow(QWidget *parent = nullptr);
    ~MusicWindow();

    void initLrcLabel();  //初始化歌词标签函数
    void lrcArr_init();  //初始化歌词数组

private slots:
    void onStateChanged(QMediaPlayer::State state);  //播放状态槽函数

    void onPlaylistChanged(int position);  //播放列表改变槽函数

    void onDurationChanged(qint64 duration);  //总时长槽函数

    void onPositionChanged(qint64 position);  //当前时长槽函数

    void on_button_back_clicked();  //返回主页面按钮槽函数

    void on_button_add_clicked();  //添加音乐按钮槽函数

    void on_button_delete_clicked();  //删除音乐按钮槽函数

    void on_button_previous_clicked();  //上一首按钮槽函数

    void on_button_next_clicked();  //下一首按钮槽函数

    void on_button_playState_clicked();  //开始/暂停按钮槽函数

    void on_listWidget_doubleClicked(const QModelIndex &index);  //双击列表播放槽函数

    void lrcArrDisplay();  //歌词更新槽函数

private:
    Ui::MusicWindow *ui;

    QMediaPlayer *player;  //播放器
    QMediaPlaylist *playlist;  //播放列表
    QString durationTime="0";  //总时长
    QString positionTime="0";  //当前时长
    QVector<QLabel*> *labelArr;  //歌词数组
    QTimer *lab_timer;  //歌词标签定时器

    //歌词结构体
    typedef struct LrcParseFormat
    {
        QString time;
        QString content;
    }LrcFormat;
    QVector<LrcFormat> *lrcArr;  //lrc歌词数组

};

#endif // MUSICWINDOW_H
